Auto-commit Mode এবং Transaction Control (commit, rollback, savepoint) গাইড ও নোট

Java Technologies - জেডিবিসি (JDBC) - Transaction Management
244

JDBC (Java Database Connectivity) একটি শক্তিশালী API যা Java অ্যাপ্লিকেশনকে ডেটাবেসের সাথে যোগাযোগ এবং ডেটাবেস অপারেশন সম্পাদন করতে সহায়তা করে। ডেটাবেসে transaction পরিচালনা করা একটি গুরুত্বপূর্ণ দিক, বিশেষ করে যখন একাধিক SQL অপারেশন একসাথে চালানো হয়। Auto-commit Mode, commit, rollback, এবং savepoint এর মাধ্যমে আপনি ট্রানজেকশন নিয়ন্ত্রণ করতে পারবেন।

এই গাইডে আমরা Auto-commit Mode, Transaction Control (commit, rollback, savepoint) নিয়ে বিস্তারিত আলোচনা করব।


1. Auto-commit Mode

Auto-commit হল JDBC-এ একটি মোড যেখানে প্রতিটি SQL অপারেশন (যেমন INSERT, UPDATE, DELETE, SELECT) স্বয়ংক্রিয়ভাবে commit হয়ে যায়। অর্থাৎ, আপনি যখন একটি SQL অপারেশন চালান, তখন তা ডেটাবেসে স্বয়ংক্রিয়ভাবে সংরক্ষণ হয়ে যায় এবং commit করতে হয় না।

Auto-commit Mode এর বৈশিষ্ট্য:

  • Default Behavior: JDBC ড্রাইভার স্বয়ংক্রিয়ভাবে auto-commit mode চালু রাখে, মানে প্রতিটি SQL স্টেটমেন্টের পর ফলাফল ডেটাবেসে commit হয়ে যায়।
  • Convenience: সাধারণত, যখন আপনি একক SQL অপারেশন চালান, তখন auto-commit ব্যবহৃত হয়।
  • Limitation: যদি আপনি একাধিক SQL অপারেশন একসাথে করতে চান, তবে auto-commit মোডটি সীমাবদ্ধ হতে পারে, কারণ এতে একাধিক অপারেশনের পর ফলাফল একত্রিত বা রিভার্স করা সম্ভব নয়।

Auto-commit Mode বন্ধ করা:

JDBC-এ আপনি auto-commit মোড বন্ধ করতে পারেন, যাতে আপনি একাধিক SQL স্টেটমেন্ট পরিচালনা করতে পারেন এবং তারপর commit অথবা rollback করতে পারেন।

উদাহরণ: Auto-commit বন্ধ করা

import java.sql.*;

public class AutoCommitExample {
    public static void main(String[] args) {
        Connection connection = null;

        try {
            // ১. ডেটাবেসে সংযোগ স্থাপন
            connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/mydatabase", "username", "password");

            // ২. Auto-commit বন্ধ করা
            connection.setAutoCommit(false);

            // ৩. SQL কোয়েরি এক্সিকিউট করা
            Statement statement = connection.createStatement();
            String query1 = "INSERT INTO users (name, email) VALUES ('John Doe', 'john@example.com')";
            statement.executeUpdate(query1);

            String query2 = "UPDATE users SET email = 'john.doe@example.com' WHERE name = 'John Doe'";
            statement.executeUpdate(query2);

            // ৪. Commit করা
            connection.commit();
            System.out.println("Transaction completed successfully.");

        } catch (SQLException e) {
            // ৫. Rollback করা যদি কোনো ত্রুটি ঘটে
            try {
                if (connection != null) {
                    connection.rollback();
                    System.out.println("Transaction rolled back.");
                }
            } catch (SQLException rollbackEx) {
                rollbackEx.printStackTrace();
            }
        } finally {
            try {
                if (connection != null) connection.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
    }
}

কোড ব্যাখ্যা:

  1. setAutoCommit(false): এটি auto-commit mode বন্ধ করে, যাতে আপনি একাধিক SQL অপারেশন একত্রে সম্পাদন করতে পারেন।
  2. commit(): যদি সব অপারেশন সঠিকভাবে সম্পন্ন হয়, তবে commit মেথড ব্যবহার করা হয় যাতে পরিবর্তন ডেটাবেসে স্থায়ী হয়।
  3. rollback(): যদি কোনো ত্রুটি ঘটে, তবে rollback মেথড ব্যবহার করে সমস্ত পরিবর্তন প্রত্যাহার করা হয়।
  4. Connection Close: সমস্ত অপারেশন শেষে সংযোগ বন্ধ করা হয়।

2. Transaction Control: commit, rollback, savepoint

2.1. commit() Method

commit() মেথড ব্যবহার করে আপনি ট্রানজেকশনটি ডেটাবেসে স্থায়ীভাবে সেভ করতে পারেন। যখন আপনি auto-commit বন্ধ করেন, তখন আপনি একাধিক SQL অপারেশন করেন এবং পরে commit() মেথড ব্যবহার করে সমস্ত পরিবর্তন ডেটাবেসে স্থায়ী করেন।

উদাহরণ:

connection.commit();  // ট্রানজেকশন commit করা

2.2. rollback() Method

rollback() মেথড ব্যবহার করে আপনি সমস্ত পরিবর্তন রিভার্স বা পূর্বাবস্থায় ফিরিয়ে আনতে পারেন। এটি তখন ব্যবহৃত হয় যখন কোনো ত্রুটি ঘটে এবং আপনি সমস্ত পরিবর্তন বাতিল করতে চান।

উদাহরণ:

connection.rollback();  // ট্রানজেকশন rollback করা

2.3. savepoint() Method

savepoint() মেথড একটি নির্দিষ্ট স্থানে একটি সেভপয়েন্ট তৈরি করে, যাতে আপনি ট্রানজেকশন চলাকালীন এই সেভপয়েন্টে ফিরে যেতে পারেন। এটি rollback করার সময় বিশেষভাবে সহায়ক যখন আপনি পুরো ট্রানজেকশনটি রিভার্স না করে একটি নির্দিষ্ট স্থানে ফিরে যেতে চান।

উদাহরণ:

Savepoint savepoint = connection.setSavepoint();  // সেভপয়েন্ট তৈরি করা

// কিছু SQL অপারেশন
String query1 = "INSERT INTO users (name, email) VALUES ('Alice', 'alice@example.com')";
statement.executeUpdate(query1);

// যদি কিছু ভুল হয়, তবে সেভপয়েন্টে ফিরে যেতে পারেন
connection.rollback(savepoint);  // সেভপয়েন্টে ফিরে যাওয়া

savepoint() এর সুবিধা:

  • এটি আপনাকে একটি ট্রানজেকশন চালানোর সময় কিছু অংশ রিভার্স করার সুযোগ দেয়, যখন আপনি পুরো ট্রানজেকশন রিভার্স করতে চান না।
  • বিশেষ করে বড় বা জটিল ট্রানজেকশনে এটি খুব উপকারী।

3. সারাংশ

JDBC-তে auto-commit mode এবং transaction control (commit, rollback, savepoint) ব্যবহৃত হয় ডেটাবেস ট্রানজেকশন পরিচালনা করার জন্য।

  • Auto-commit Mode: প্রতিটি SQL কোয়েরি স্বয়ংক্রিয়ভাবে commit হয়, যা সাধারণত একক SQL অপারেশনের জন্য ব্যবহৃত হয়।
  • commit(): সমস্ত পরিবর্তন ডেটাবেসে স্থায়ী করতে ব্যবহৃত হয়।
  • rollback(): যদি কোনো ত্রুটি ঘটে, তবে সমস্ত পরিবর্তন বাতিল করা হয়।
  • savepoint(): একটি সেভপয়েন্ট তৈরি করে, যাতে আপনি নির্দিষ্ট একটি স্থানে ফিরে যেতে পারেন।

এটি নিশ্চিত করে যে ডেটাবেসের ডেটা সঠিক এবং পূর্ণাঙ্গভাবে প্রসেস হচ্ছে এবং প্রয়োজনে আপনি ভুল বা ত্রুটিপূর্ণ পরিবর্তনগুলি বাতিল করতে পারেন। Transaction Control ব্যবহারের মাধ্যমে আপনি ডেটাবেসে কার্যকরী এবং নিরাপদভাবে কাজ করতে পারেন।

Content added By
Promotion
NEW SATT AI এখন আপনাকে সাহায্য করতে পারে।

Are you sure to start over?

Loading...